perm filename EUCLID.5[OLD,BGB] blob
sn#099408 filedate 1974-04-26 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 Euclidean Primitives.
00006 ENDMK
⊗;
Euclidean Primitives.
1. TRANSLATE(Q,R); Q argument is a body, face, edge or vertex.
2. ROTATE(Q,R); R argument is a transformation array with
3. DILATE(Q,R); respect to world coordinates.
4. REFLECT(Q,R);
The four Euclidean transformations are translation, rotation,
reflection and dilation; and as first mentioned in Klein's Erlangen
Program, 1872, these four primitives form a group. The primitives may
be applied to bodies, faces, edges or vertices in order to change
vertex world locii. Thus a body is the set of vertices in its vertex
ring, a face is the set of vertices on its perimeter, an edge is the
two vertices which are its ends, and a single vertex is itself; but
there are special cases having to do with faces. (In GEOMED a
special counter, negative Fcnt, is maintained in wire sweep faces in
order to make solids of rotation). The second argument R is a pointer
to a transformation array in world coordinates of four rows and three
columns:
XWC, YWC, ZWC
IX, IY, IZ
JX, JY, JZ
KX, KY, KZ
For translation, only the XWC, YWC and ZWC are involved and all the
vertices are translated in the obvious fashion:
X ← X + XWC; Y ← Y + YWC; Z ← Z + ZWC;
Whereas for rotation (dilation and reflection) the innermost
computation applied to each vertex is:
X ← X + XWC; Y ← Y + YWC; Z ← Z + ZWC;
XX ← IX*X + IY*Y + IZ*Z;
YY ← JX*X + JY*Y + JZ*Z;
ZZ ← KX*X + KY*Y + KZ*Z;
X ← XX - XWC; Y ← YY - YWC; Z ← ZZ - ZWC;